package com.microcdyUser.service.impl;
import com.microcdyUser.dao.SysOperLogMapper;
import com.microcdy.sys.pojo.SysOperLog;
import com.microcdyUser.service.SysOperLogService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/****
 * @Author:cdy
 * @Description:SysOperLog业务层接口实现类
 * @Date 2019/6/14 0:16
 *****/
@Service
public class SysOperLogServiceImpl implements SysOperLogService {

    @Autowired
    private SysOperLogMapper sysOperLogMapper;


    /**
     * SysOperLog条件+分页查询
     * @param sysOperLog 查询条件
     * @param page 页码
     * @param size 页大小
     * @return 分页结果
     */
    @Override
    public PageInfo<SysOperLog> findPage(SysOperLog sysOperLog, int page, int size){
        //分页
        PageHelper.startPage(page,size);
        //搜索条件构建
        Example example = createExample(sysOperLog);
        //执行搜索
        return new PageInfo<SysOperLog>(sysOperLogMapper.selectByExample(example));
    }

    /**
     * SysOperLog分页查询
     * @param page
     * @param size
     * @return
     */
    @Override
    public PageInfo<SysOperLog> findPage(int page, int size){
        //静态分页
        PageHelper.startPage(page,size);
        //分页查询
        return new PageInfo<SysOperLog>(sysOperLogMapper.selectAll());
    }

    /**
     * SysOperLog条件查询
     * @param sysOperLog
     * @return
     */
    @Override
    public List<SysOperLog> findList(SysOperLog sysOperLog){
        //构建查询条件
        Example example = createExample(sysOperLog);
        //根据构建的条件查询数据
        return sysOperLogMapper.selectByExample(example);
    }


    /**
     * SysOperLog构建查询对象
     * @param sysOperLog
     * @return
     */
    public Example createExample(SysOperLog sysOperLog){
        Example example=new Example(SysOperLog.class);
        Example.Criteria criteria = example.createCriteria();
        if(sysOperLog!=null){
            // 日志主键
            if(!StringUtils.isEmpty(sysOperLog.getOperId())){
                    criteria.andEqualTo("operId",sysOperLog.getOperId());
            }
            // 模块标题
            if(!StringUtils.isEmpty(sysOperLog.getTitle())){
                    criteria.andLike("title","%"+sysOperLog.getTitle()+"%");
            }
            // 业务类型（0其它 1新增 2修改 3删除）
            if(!StringUtils.isEmpty(sysOperLog.getBusinessType())){
                    criteria.andEqualTo("businessType",sysOperLog.getBusinessType());
            }
            // 方法名称
            if(!StringUtils.isEmpty(sysOperLog.getMethod())){
                    criteria.andEqualTo("method",sysOperLog.getMethod());
            }
            // 请求方式
            if(!StringUtils.isEmpty(sysOperLog.getRequestMethod())){
                    criteria.andEqualTo("requestMethod",sysOperLog.getRequestMethod());
            }
            // 操作类别（0其它 1后台用户 2手机端用户）
            if(!StringUtils.isEmpty(sysOperLog.getOperatorType())){
                    criteria.andEqualTo("operatorType",sysOperLog.getOperatorType());
            }
            // 操作人员
            if(!StringUtils.isEmpty(sysOperLog.getOperName())){
                    criteria.andEqualTo("operName",sysOperLog.getOperName());
            }
            // 部门名称
            if(!StringUtils.isEmpty(sysOperLog.getDeptName())){
                    criteria.andEqualTo("deptName",sysOperLog.getDeptName());
            }
            // 请求URL
            if(!StringUtils.isEmpty(sysOperLog.getOperUrl())){
                    criteria.andEqualTo("operUrl",sysOperLog.getOperUrl());
            }
            // 主机地址
            if(!StringUtils.isEmpty(sysOperLog.getOperIp())){
                    criteria.andEqualTo("operIp",sysOperLog.getOperIp());
            }
            // 操作地点
            if(!StringUtils.isEmpty(sysOperLog.getOperLocation())){
                    criteria.andEqualTo("operLocation",sysOperLog.getOperLocation());
            }
            // 请求参数
            if(!StringUtils.isEmpty(sysOperLog.getOperParam())){
                    criteria.andEqualTo("operParam",sysOperLog.getOperParam());
            }
            // 返回参数
            if(!StringUtils.isEmpty(sysOperLog.getJsonResult())){
                    criteria.andEqualTo("jsonResult",sysOperLog.getJsonResult());
            }
            // 操作状态（0正常 1异常）
            if(!StringUtils.isEmpty(sysOperLog.getStatus())){
                    criteria.andEqualTo("status",sysOperLog.getStatus());
            }
            // 错误消息
            if(!StringUtils.isEmpty(sysOperLog.getErrorMsg())){
                    criteria.andEqualTo("errorMsg",sysOperLog.getErrorMsg());
            }
            // 操作时间
            if(!StringUtils.isEmpty(sysOperLog.getOperTime())){
                    criteria.andEqualTo("operTime",sysOperLog.getOperTime());
            }
        }
        return example;
    }

    /**
     * 删除
     * @param id
     */
    @Override
    public void delete(Long id){
        sysOperLogMapper.deleteByPrimaryKey(id);
    }

    /**
     * 修改SysOperLog
     * @param sysOperLog
     */
    @Override
    public void update(SysOperLog sysOperLog){
        sysOperLogMapper.updateByPrimaryKey(sysOperLog);
    }

    /**
     * 增加SysOperLog
     * @param sysOperLog
     */
    @Override
    public void add(SysOperLog sysOperLog){
        sysOperLogMapper.insert(sysOperLog);
    }

    /**
     * 根据ID查询SysOperLog
     * @param id
     * @return
     */
    @Override
    public SysOperLog findById(Long id){
        return  sysOperLogMapper.selectByPrimaryKey(id);
    }

    /**
     * 查询SysOperLog全部数据
     * @return
     */
    @Override
    public List<SysOperLog> findAll() {
        return sysOperLogMapper.selectAll();
    }
}
